The amount of web traffic over the internet is ever-increasing. Much of the increase in web traffic is due to increased social media usage, cloud based storage, online media steaming services, etc. Therefore, the amount of data to be processed by network devices and/or throughput requirements for network devices is ever-increasing. The majority of internet web traffic is Transmission Control Protocol (TCP) based web traffic. However, there is a significant overhead for network devices to process TCP based web traffic. As such, processing TCP based web traffic reduces throughput for network devices and/or reduces network data rates. Additionally, TCP based web traffic increases processing requirements of network devices (e.g., increases central processing unit (CPU) usage for network devices). Therefore, resources for other network applications performed by network devices are reduced (e.g., CPU usage for other network applications is reduced).
One software-based solution is to gather data (e.g., TCP segments) when receiving packets of data. For example, an operating system (e.g., a kernel network stack) of a network device can gather data when receiving packets of data. As such, the number of data packets to be processed by a network device can be reduced. However, this solution still increases processing requirements of the network device (e.g., increases CPU usage for the network device). For example, the CPU of the network device is required to perform the gathering of the data and TCP protocol level functions. Therefore, TCP level protocol processing on the network device (e.g., the CPU) cannot be performed in parallel with the gathering of the data.
The above-described description is merely intended to provide a contextual overview of current techniques for processing data in a network and is not intended to be exhaustive.